<template>
  <div style="display: flex;">
    <div style="width:200px;margin-right: 10px;" v-if="TenantIds">
      <a-card :bordered="false">
        <a-input-search @search="getTenant" style="width:100%;" allowClear placeholder="请输入租户名称" />
        <a-list
          :split="false"
          item-layout="horizontal"
          :data-source="listData"
          style="margin-top:20px;max-height: 747px;overflow-y: auto;"
        >
          <a-list-item slot="renderItem" slot-scope="item, index">
            <a-list-item-meta>
              <a slot="title" @click="searchData(item)" :style="{ color: item.id == tenantId ? '#13C2C2' : '' }">{{
                item.name
              }}</a>
            </a-list-item-meta>
          </a-list-item>
        </a-list>
      </a-card>
    </div>
    <div style="flex:1">
      <a-card :bordered="false">
        <!-- 查询区域 -->
        <div class="table-page-search-wrapper">
          <a-form layout="inline" @keyup.enter.native="searchQuery">
            <a-row :gutter="24">
              <!-- <a-col :md="6" :sm="8">
                <a-form-item label="职务编码">
                  <a-input placeholder="请输入职务编码" v-model="queryParam.code"></a-input>
                </a-form-item>
              </a-col> -->
              <a-col :md="6" :sm="8">
                <a-form-item label="职务名称">
                  <a-input placeholder="请输入职务名称" v-model="queryParam.name"></a-input>
                </a-form-item>
              </a-col>
                <a-col :md="6" :sm="8">
                  <a-form-item label="职级">
                    <j-dict-select-tag
                      v-model="queryParam.postRank"
                      placeholder="请选择职级"
                      dictCode="position_rank"
                    />
                  </a-form-item>
                </a-col>
              <a-col :md="6" :sm="8">
                <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                  <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                  <a-button type="primary" @click="searchReset2" icon="reload" style="margin-left: 8px">重置</a-button>
                  <!-- <a @click="handleToggleSearch" style="margin-left: 8px">
                    {{ toggleSearchStatus ? '收起' : '展开' }}
                    <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
                  </a> -->
                </span>
              </a-col>
            </a-row>
          </a-form>
        </div>

        <!-- 操作按钮区域 -->
        <div class="table-operator">
          <a-button @click="handleAdd" type="primary" icon="plus" v-has="'position:add'">新增</a-button>
          <a-button type="primary" icon="download" @click="handleExport('职务表')" v-has="'position:export'">导出</a-button>
          <!-- <a-upload
            name="file"
            v-has="'position:import'"
            :showUploadList="false"
            :multiple="false"
            :headers="tokenHeader"
            :action="importExcelUrl"
            @change="handleImportExcel"
          >
            <a-button type="primary" icon="import">导入</a-button>
          </a-upload> -->
          <a-dropdown v-if="selectedRowKeys.length > 0">
            <a-menu slot="overlay" v-has="'position:deleteBatch'">
              <a-menu-item key="1" @click="batchDel">
                <a-icon type="delete" />
                删除
              </a-menu-item>
            </a-menu>
            <a-button style="margin-left: 8px">
              批量操作
              <a-icon type="down" />
            </a-button>
          </a-dropdown>
        </div>

        <!-- table区域-begin -->
        <div>
          <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
            <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择
            <a style="font-weight: 600">{{ selectedRowKeys.length }}</a
            >项
            <a style="margin-left: 24px" @click="onClearSelected">清空</a>
          </div>

          <a-table
            ref="table"
            size="middle"
            bordered
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource"
            :pagination="ipagination"
            :loading="loading"
            :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
            @change="handleTableChange"
          >
            <span slot="action" slot-scope="text, record">
              <a-space>

                <a @click="handleEdit(record)" v-has="'position:edit'">编辑</a>
  
                <a-dropdown>
                  <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
                  <a-menu slot="overlay">
                    <a-menu-item v-has="'position:delete'">
                      <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                        <a>删除</a>
                      </a-popconfirm>
                    </a-menu-item>
                  </a-menu>
                </a-dropdown>
              </a-space>
            </span>
          </a-table>
        </div>
        <!-- table区域-end -->

        <!-- 表单区域 -->
        <sysPosition-modal ref="modalForm" @ok="modalFormOk" :tenantId="tenantId"></sysPosition-modal>
      </a-card>
    </div>
  </div>
</template>

<script>
import SysPositionModal from './modules/SysPositionModal'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JDictSelectTag from '@/components/dict/JDictSelectTag'
import { USER_INFO } from '@/store/mutation-types'
import Vue from 'vue'
import { getAction, putAction, getFileAccessHttpUrl } from '@/api/manage'
export default {
  name: 'SysPositionList',
  mixins: [JeecgListMixin],
  components: {
    SysPositionModal,
    JDictSelectTag
  },
  data() {
    return {
      listData: [],
      relTenantIds: '',
      tenantId: '',
      description: '职务表管理页面',
      // 表头
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
          }
        },
        // {
        //   title: '职务编码',
        //   align: 'center',
        //   dataIndex: 'code'
        // },
        {
          title: '职务名称',
          align: 'center',
          dataIndex: 'name'
        },
        {
          title: '职级',
          align: 'center',
          dataIndex: 'postRank_dictText'
        },
        // {
        //   title: '公司id',
        //   align: 'center',
        //   dataIndex: 'companyId'
        // },
        {
          title: '操作',
          dataIndex: 'action',
          align: 'center',
          scopedSlots: { customRender: 'action' }
        }
      ],
      url: {
        list: '/sys/position/list',
        delete: '/sys/position/delete',
        deleteBatch: '/sys/position/deleteBatch',
        exportXlsUrl: '/sys/position/exportXls',
        importExcelUrl: 'sys/position/importExcel'
      }
    }
  },
  computed: {
    importExcelUrl: function() {
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
    },
    TenantIds(){
      return this.$store.state.skCommon.relTenantIds.indexOf(Vue.ls.get(USER_INFO).relTenantIds) != -1
      // return this.$store.state.skCommon.relTenantIds
    }
  },
  created() {
    this.getTenant()
    this.relTenantIds = Vue.ls.get(USER_INFO).relTenantIds
  },
  methods: {
    handleExport(fileName){
      this.queryParam.tenantId = this.tenantId
      this.handleExportXls(fileName)
    },
    getTenant(value) {
      const url = '/sys/tenant/listAll'
      let params = {
        name: value
      }
      getAction(url, params)
        .then(res => {
          if (res.success) {
            this.listData = res.result
            if (this.TenantIds) {
              this.searchData(this.listData[0])
            } else {
              this.searchData({ id: this.relTenantIds })
            }
          } else {
            this.$message.warning(res.message)
          }
        })
        .catch(error => {
          console.error(error)
        })
    },
    searchData(data) {
      this.tenantId = data.id
      this.queryParam.tenantId = data.id
      this.searchQuery()
    },
    searchReset2(){
      this.queryParam = {
        tenantId:this.tenantId
      }
      this.loadData(1);
    },
  }
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>
